#ifndef _DISC_H_
#define _DISC_H_

#include <gccore.h> /* for define ATTRIBUTE_PACKED */

#ifdef __cplusplus
extern "C" {
#endif
    /* Disc header structure */
    struct discHdr
	{
		/* Game ID */
		u8 id[6];

		/* Game version */
		u16 version;

		/* Audio streaming */
		u8 streaming;
		u8 bufsize;

		/* Padding */
		u32 game_idx;
		u8 unused1[10];

		/* Magic word */
		u32 magic;

		/* Padding */
		u8 unused2[4];

		/* Game title */
		char title[64];

		/* Encryption/Hashing */
		u8 encryption;
		u8 h3_verify;

		/* Padding */
		u8 unused3[30];
	} ATTRIBUTE_PACKED;

    /* Prototypes */
    s32  Disc_Init(void);
    s32  Disc_Open(void);
    s32  Disc_Wait(void);
    void __Disc_SetLowMem(void);
    s32  Disc_SetUSB(const u8 *);
    s32  Disc_ReadHeader(void *);
    s32  Disc_IsWii(void);
    s32  Disc_BootPartition(u64, u8, u8, u8, u8, u32);
    s32  Disc_WiiBoot(u8, u8, u8, u8, u32);
    s32 __Disc_FindPartition(u64 *outbuf);
    void PatchCountryStrings(void *Address, int Size);
    s32 __Disc_FindPartition(u64 *outbuf);

#ifdef __cplusplus
}
#endif

#endif
